An operating system may include a memory manager to allocate and de-allocate memory spaces, via a virtual memory address space mapped to a physical memory address space associated with a memory, for the execution of software applications. Multiple processing threads (referred to as “threads” herein) managed by the operating system may attempt to allocate and de-allocate (also referred to as “free”) a same location in the memory address space, thus creating the risk of concurrent accesses to the same portion of the memory device by multiple threads. For example, a concurrent access may occur if a first thread running on a first processor tries to read a memory location that had been freed by a second thread running on a second processor, thus creating a read inconsistency for the first thread.